package leetcode_day._2021._202108._1120;

import java.util.Arrays;
import java.util.HashSet;
import java.util.Set;

/**
 * @author yzh
 * @version 1.0
 * @date 2021/8/19 20:32
 * 反转字符串中的元音字母
 * 算法：双指针
 * 首尾指针，碰到元音字母就停止，然后交换
 */
public class _19_345 {
    public static void main(String[] args) {
        System.out.println(new _19_345().reverseVowels("hello"));
    }

    private static Set<Character> set;
    static {
        set = new HashSet<>(10);
        set.addAll(Arrays.asList('a', 'e', 'i', 'o', 'u', 'A', 'E', 'I', 'O', 'U'));
    }
    public String reverseVowels(String s) {
        int f = 0, t = s.length() - 1;
        final char[] array = s.toCharArray();
        while (f < t) {
            while (f < t && !set.contains(array[f])) ++f;
            while (f < t && !set.contains(array[t])) --t;
            if (f < t) {
                char tmp = array[f];
                array[f] = array[t];
                array[t] = tmp;
            }
            ++f;
            --t;
        }
        return new String(array);
    }

}
